package app

import "fmt"

var (
	IllegalAccessError  = NewError(200, "非法访问")
	InnerError          = NewError(201, "内部程序异常")
	UserOrPasswordError = NewError(202, "用户名或密码不正确")
	ParamsError         = NewError(203, "参数错误")
	TokenTimeout        = NewError(204, "非法访问：token已过期")
	CodeError           = NewError(205, "验证码输入错误")
	UserNoExist         = NewError(206, "用户不存在")

	AppNotExist     = NewError(300, "应用不存在")
	AppNotExistUser = NewError(301, "该应用未授权给该用户")
	AppHasGrantUser = NewError(302, "该应用已给该用户授权，请勿重复授权")
	QrcodeExpired   = NewError(303, "二维码已失效")
)

type ErrorCode struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

var codes = map[int]string{}

func NewError(code int, msg string) *ErrorCode {
	if _, ok := codes[code]; ok {
		panic(fmt.Sprintf("错误码 %d 已经存在，请更换一个", code))
	}
	codes[code] = msg
	return &ErrorCode{Code: code, Msg: msg}
}
